// app.js
const express = require('express');
const cors = require('cors');
const mysql = require('mysql2/promise'); // 使用 promise 版本

const app = express();
app.use(cors());
app.use(express.json());

// 连接 MySQL 数据库（请修改为你的数据库配置）
const pool = mysql.createPool({
    host: 'localhost',      // 本地 MySQL 服务器
    user: 'root',           // 数据库用户名
    password: 'hy753951456852', // 数据库密码
    database: 'xiaochengxu', // 数据库名
    waitForConnections: true,
    connectionLimit: 10,
    queueLimit: 0
});

// 测试数据库连接
pool.getConnection()
    .then(conn => {
        console.log('数据库连接成功');
        conn.release(); // 释放连接
    })
    .catch(err => {
        console.error('数据库连接失败:', err);
    });

// 创建表（如果不存在）
async function createTable() {
    try {
        await pool.execute(`
      CREATE TABLE IF NOT EXISTS messages (
        id INT PRIMARY KEY AUTO_INCREMENT,
        content TEXT NOT NULL,
        timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
      )
    `);
        console.log('表创建成功或已存在');
    } catch (err) {
        console.error('创建表失败:', err);
    }
}

createTable(); // 初始化表结构

// API 接口：获取消息列表
app.get('/api/messages', async (req, res) => {
    try {
        const [rows] = await pool.execute('SELECT * FROM messages ORDER BY timestamp DESC');
        res.json(rows);
    } catch (err) {
        res.status(500).json({ error: '获取消息失败', details: err.message });
    }
});

// API 接口：添加消息
app.post('/api/messages', async (req, res) => {
    const { content } = req.body;
    if (!content) {
        return res.status(400).json({ error: '内容不能为空' });
    }
    try {
        const [result] = await pool.execute(
            'INSERT INTO messages (content) VALUES (?)',
            [content]
        );
        res.json({ id: result.insertId, success: true });
    } catch (err) {
        res.status(500).json({ error: '添加消息失败', details: err.message });
    }
});

// 获取景点列表（对应 xiaochengxu 数据库的 jingdian）
app.get('/api/scenicSpots', async (req, res) => {
    try {
        const [rows] = await pool.execute('SELECT * FROM jingdian');
        res.json(rows);
    } catch (err) {
        res.status(500).json({ error: '获取景点数据失败', details: err.message });
    }
});
// 获取酒店列表（对应 xiaochengxu 数据库的 jiudian）
app.get('/api/hotalSpots', async (req, res) => {
    try {
        const [rows] = await pool.execute('SELECT * FROM jiudian');
        res.json(rows);
    } catch (err) {
        res.status(500).json({ error: '获取酒店数据失败', details: err.message });
    }
});
// 获取旅行团列表（对应 xiaochengxu 数据库的 lvxing）
app.get('/api/travelSpots', async (req, res) => {
    try {
        const [rows] = await pool.execute('SELECT * FROM lvxing');
        res.json(rows);
    } catch (err) {
        res.status(500).json({ error: '获取旅行团数据失败', details: err.message });
    }
});

// 启动服务器
const PORT = 3000;
app.listen(PORT, () => {
    console.log(`服务器运行在 http://localhost:${PORT}`);
});